The invention relates generally to testing networks. More specifically, embodiments of the invention relate to systems and methods for emulating a network based on device configurations derived from devices used in the network.
An enterprise network refers to a network belonging to an enterprise consisting of thousands of computers distributed across geographically remote locations and connected by wide area network (WAN) links. Enterprise level networks typically use transmission control protocol/internet protocol (TCP/IP) and are divided into a number of smaller networks called subnets which are linked by devices known as routers. These networks are often heterogeneous networks consisting of different protocols and operating systems all interoperating to various degrees.
A typical network spanning a large geographical area contains a collection of machines or hosts, intended for running user programs. The hosts are connected together by a local area network (LAN), with each LAN connected together by a communication subnet that carries messages from host to host. The network separates the pure communications aspects of the network (subnet) from the application aspects (hosts).
In most WANs, the subnet consists of two distinct components, transmission lines and switching elements. The switching elements are specialized computers used to connect two or more transmission lines. When data arrives on an incoming line, the switching element must choose an outgoing line to forward them on. The switching elements are referred to as packet switching nodes, or more generically, routers.
A router is a device that forwards data packets along networks. A router is connected to at least two networks, commonly two LANs or WANs or a LAN and its Internet service provider's (ISP) network that provides Internet access using a peer network consisting of thousands of high-speed routers that pass IP routes and traffic among one another.
Shown in FIG. 1 is a network where each host is connected to a LAN on which a router is present. Routers are located at gateways, the places where two or more networks connect. Routers use headers and forwarding tables to determine the best path for forwarding packets and use protocols such as Internet control message protocol (ICMP). A host can also be connected directly to a router. The collection of communication lines and routers form a subnet.
The term subnet generally refers to the collection of routers and communication lines that move data packets from a source host to a destination host. For most WANs, the network contains numerous cables or telephone lines each connecting a pair of routers. If two routers that do not share a cable wish to communicate, they must do this indirectly via other routers. When a packet is sent from one router to another via one or more intermediate routers, the packet is received at each intermediate router in its entirety, stored there until the required output line is free, and then forwarded. A subnet using this principle is referred to as packet-switched.
Routers used in the Internet are linked together in a web. The packets follow a path of least resistance to ensure they arrive at their destination in a reasonable amount of time. Packets should go through the least number of routers to get to their final destination. However, since there may be congestion clogging the ideal path, routers send traffic around the congested parts of the Internet increasing speed and efficiency. The routers that make up the backbone of the Internet can reconfigure the paths that the packets take since they observe all information surrounding each data packet and inform other routers about line conditions such as problems sending and receiving data on various parts of the Internet.
Network simulation is used to develop, test, and debug new protocols, to explore and study a specific network-related research issue, or to evaluate the performance of an existing protocol or scheme. The purpose of a network simulator is to study the dynamic behavior of flow and congestion control schemes in packet-switched data networks. Simulation provides users with a way of specifying networks and to simulate their behavior.
Network simulators such as NS (Network Simulator), which is widely used in the networking community, generally provide a rich set of protocol modules and configuration tools that can be easily used to conduct customized simulation experiments. However, the functionalities provided by the modules in network simulators are logical operations rather than real implementations. Therefore, a protocol implementation in a network simulator must be modified before being deployed to a target network.
Network emulation is the execution of real network protocol implementation code in a controllable and reproducible laboratory network environment. Unlike simulation, the protocols and applications as well as the interaction between protocols are “real.” Network traffic physically traverses the emulation environment, in which underlying protocols are tested and evaluated against user-defined network conditions and traffic dynamics, such as packet latency, link bandwidth, packet drop rate, bit error rate (BER), and link failure.
Most existing network emulators can only provide an environment for end-to-end protocol evaluation since they abstract a network cloud to a simple router with specific packet handling operations. Therefore, topology related protocols cannot be evaluated with those emulators.
Some emulators employ a simple one-to-one mapping scheme to emulate a target network topology in a LAN. However, when the target network is quite large, the emulation environment will be too costly to establish.
There are a variety of projects which support software router emulation. Zebra is a popular open source project of this type. These projects are focused on implementing IP routing functionality on general-purpose computing devices. However, the commands used to configure these devices are specialized and do not mimic the commands seen in traditional routers. There are other software emulators which do mimic the specific command set of a vendor's router. However, these are found as part of certification training packages which are designed to support a single user on a personal computer.
Normally, end-to-end testing is only accomplished on a limited set of test devices which are added to the production database image. What is needed is an application that can develop and test end-to-end network functionality using a production network database image that does not have to be altered, and can test configuration changes across an entire network of devices, not a small sample of real devices. Further, the breadth of end-to-end transactions is vastly increased, since a normal test environment is limited in the types of hardware and connectivity that is supported.